(x_real_positions): Make sure we know the parent window.
authorRichard M. Stallman <rms@gnu.org>
Fri, 17 Jun 1994 23:34:37 +0000 (23:34 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 17 Jun 1994 23:34:37 +0000 (23:34 +0000)
src/xfns.c

index 00f0f2055a159eccf1914fd533be881c4122748d..a8bcc81cc515b4428588bb5ea978a0987033c232 100644 (file)
@@ -570,6 +570,23 @@ x_real_positions (f, xptr, yptr)
   int win_x = 0, win_y = 0;
   Window child;
 
+  /* This is pretty gross, but seems to be the easiest way out of
+     the problem that arises when restarting window-managers.  */
+
+#ifdef USE_X_TOOLKIT
+  Window outer = XtWindow (f->display.x->widget);
+#else
+  Window outer = f->display.x->window_desc;
+#endif
+  Window tmp_root_window;
+  Window *tmp_children;
+  int tmp_nchildren;
+
+  XQueryTree (x_current_display, outer, &tmp_root_window,
+             &f->display.x->parent_desc,
+             &tmp_children, &tmp_nchildren);
+  xfree (tmp_children);
+
   /* Find the position of the outside upper-left corner of
      the inner window, with respect to the outer window.  */
   if (f->display.x->parent_desc != ROOT_WINDOW)